package com.diapoclic.testservlet;


import java.io.IOException;
import java.sql.SQLException;



import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.diapoclic.entitybean.*;
import com.diapoclic.entitydao.*; // utile seulement parce que ce sont des tests du DAO!
import com.diapoclic.entitymanager.*;


public class UserTestServlet extends HttpServlet {

	
	private static final long serialVersionUID = 1L;

	public void doGet(HttpServletRequest request, HttpServletResponse response)
		throws IOException, ServletException{
		
		response.setContentType("text/html");
		//PrintWriter out = response.getWriter();
		
// Test d'instanciation de la classe User
//---------------------------------------
		User bob=new User();
		
		bob.setLogin("Bob111");
		bob.setMail("bob@jacky.fr");
			
		request.setAttribute("User", bob);
		request.setAttribute("UserLogin", bob.getLogin());

		
//Test d'instanciation de la classe UserDao
//-----------------------------------------
		
		UserDao bobDao=new UserDao();
		//test de la fonction findbyid dans le UserDAO
		try {
			request.setAttribute("UserDao", bobDao.findById(2));
		} catch (SQLException e1) {
			System.out.println("erreur dans l'appel findById");
			e1.printStackTrace();
		}
		
	 //test de finbyids dans le UserDAO
	 
		int[] ids=new int[]{2,3};
		try {
			request.setAttribute("findbyids",bobDao.findByIds(ids));
		} catch (SQLException e) {
			System.out.println("erreur dans l'appel findByIds");
			e.printStackTrace();
		}
		
		//test de findbyName dans le UserDAO
				try {
							request.setAttribute("findbyname",bobDao.findByName("n"));
						} catch (SQLException e) {
							System.out.println("erreur dans l'appel findByName");
							e.printStackTrace();
						}
				
		
		//test de findbyFirstname dans le UserDAO
		try {
					request.setAttribute("findbyfirstname",bobDao.findByFirstname("firstname3"));
				} catch (SQLException e) {
					System.out.println("erreur dans l'appel findByFirstname");
					e.printStackTrace();
				}
		
		//test de findbyMail dans le UserDAO
		try {
					request.setAttribute("findbymail",bobDao.findByMail("mail3@toto.fr"));
				} catch (SQLException e) {
					System.out.println("erreur dans l'appel findByMail");
					e.printStackTrace();
				}
		//test de findbyPassword dans le UserDAO
		try {
					request.setAttribute("findbypassword",bobDao.findByPassword("pw3"));
				} catch (SQLException e) {
					System.out.println("erreur dans l'appel findByPassword");
					e.printStackTrace();
				}
		//test de findbyLogin dans le UserDAO
		try {
					request.setAttribute("findbylogin",bobDao.findByLogin("login3"));
				} catch (SQLException e) {
					System.out.println("erreur dans l'appel findByLogin");
					e.printStackTrace();
		}
		 
		//test de addUser dans le UserDAO
		User bob2=new User();

		try {
					int res=bobDao.addUser("name6", "firstname56", "mail6@toto.fr", "pw6", "login6");

		} catch (SQLException e) {
					System.out.println("erreur dans l'appel addUser");
					e.printStackTrace();
		}
		
		
		
//Test d'instanciation de la classe UserManager
//-----------------------------------------		
		
		UserManager bobManager=new UserManager();	
		// Test de la fonction d'authentification
		try {
			request.setAttribute("userconnect",bobManager.authentification("bob","pw2"));
		} catch (SQLException e) {
			System.out.println("erreur dans l'appel Authentification");
			e.printStackTrace();
		}
		
		//test de la fonction d'ajout d'un user
		String log="nouveaulogin";
		try {
			if (bobManager.loginExist(log)) 
				{request.setAttribute("adduser",new User());}
			else request.setAttribute("adduser",bobManager.addUser("bob", "bobfirstname", "bob@bob.fr", "pwbob", log));
		} catch (SQLException e) {
			System.out.println("erreur dans l'appel Authentification");
			e.printStackTrace();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		//test de la fonction d'ajout de mise à jour d'user
		User bob3=new User("newNamebase2", "newFirstname", "newMail", "newPassword","newLogin");
		bob3.setIdUser(15);
		try {
			request.setAttribute("updateuser",bobManager.getUserDao().updateUser(bob3));
			
		} catch (SQLException e) {
			System.out.println("erreur dans l'appel de la mise à jour");
			e.printStackTrace();
		}
		

		//test de la fonction de lister les amis
		
		try {
			request.setAttribute("listeamis",bobManager.getUserDao().listFriend(3));
			
		} catch (SQLException e) {
			System.out.println("erreur dans l'appel de la mise à jour");
			e.printStackTrace();
		}
		
		//test de la fonction de d'ajout et de suppression d'amis
		
		try {
			bobManager.getUserDao().addFriend(1,8);
			bobManager.getUserDao().removeFriend(4, 1);
			
		} catch (SQLException e) {
			System.out.println("erreur dans l'appel de la mise à jour d'amis");
			e.printStackTrace();
		}
		
		//test de la fonction de d'ajout et d'album partagé
		
		try {
			bobManager.getUserDao().addFolderShared(1, 5, 1);
			bobManager.getUserDao().removeFolderShared(1, 7, 1);
			
		} catch (SQLException e) {
			System.out.println("erreur dans l'appel de la mise à jour des dossier partagé");
			e.printStackTrace();
		}

		
	
		
		request.getRequestDispatcher("usertestjsp.jsp").forward(request, response);
	}	
	
	public void doPost(HttpServletRequest request, HttpServletResponse response)
	{
		
		
	}
}
